Next: 3 Other Approaches
Up: X Server Multi-rendering for
Previous: 1 Introduction
Multi-rendering is the means, not the end. The concept grew
from a set of requirements for the current generation Silicon Graphics
X server and the operating system and hardware capabilities at
our disposal. The requirements are:
- Support both indirect and direct OpenGL rendering. Indirect
rendering is rendering done by the X server on behalf of
the client. Direct rendering
is done by the client directly manipulating the hardware.
Direct rendering is optionally supported by OpenGL
implementations.
- Support the X Consortium's PEX 5.1 extension.
- The same OpenGL rendering library used for direct rendering
OpenGL programs ``outside'' the X server should be used
inside the X server.
- The solution must not diminish X server interactivity.
Along with these requirements, we needed a mechanism that would
let us meet a number of important goals:
- Do not compromise X server reliability.
- Limit changes to the X Consortium's sample server organization
to keep manageable the task of integrating future X Consortium
releases and bug fixes.
- Do not require changes to extensions not using multi-rendering.
- Support dynamic loading of the OpenGL and PEX extensions to
reduce overhead when not using these extensions.
- Minimize synchronization and locking overhead when using multi-rendering.
- Add no measurable overhead when not using multi-rendering.
- Render PEX using OpenGL to require only a single 3D
device-dependent component.
- Provide a single mechanism to work across SGI's
full line of graphics hardware.
- Minimize use of expensive operating systems resources.
In particular, processes and rendering nodes
should be allocated judiciously.
- Meet the schedule for release.
The goals reflect the desire to keep the X server maintainable, to
minimize the overall engineering effort required, and to maintain high
overall performance. We feel the multi-rendering scheme we have
implemented meets all of the above stated requirements and goals.
Other sets of requirements, goals, and system capabilities are likely
to lead to other approaches. For example, IBM's OpenGL implementation
[12] has a similar set of requirements but does not adopt
multi-rendering.
Next: 3 Other Approaches
Up: X Server Multi-rendering for
Previous: 1 Introduction
Mark Kilgard
Sun Jan 7 19:20:04 PST 1996